/**
 * @param {number[]} temperatures
 * @return {number[]}
 */
 var dailyTemperatures = function(temperatures) {
    let n = temperatures.length // 获得这个温度数组的长度
    let res = Array(n).fill(0) // 生成结果数组 初始化都是0
    const stack = [] // 初始化递增单调栈  
    stack.push(0) // 放入第一个元素的下标
    for(let i = 1;i < n;i++){
      // 从第一个元素开始遍历
      let top = stack[stack.length - 1] // 找到栈顶元素
      if(temperatures[i] < temperatures[top]){
        // 如果当前的元素 小于 栈顶元素 那么直接把这个元素放进栈顶
        stack.push(i)
      }else if(temperatures[i] === temperatures[top]){
        // 如果当前元素等于栈顶元素 那么直接把这个元素放进站内
        stack.push(i)
      }else{
        // 当这个栈还有元素 并且 栈顶元素的温度值小于当前元素的温度值
        while(stack.length && temperatures[i] > temperatures[stack[stack.length-1]]){
          let top = stack.pop() // 弹出栈顶元素
          res[top] = i - top // 将栈顶元素代表的下标的位置的数字改为 当前下标和栈顶元素下标的差值
        }
        stack.push(i) // 退出循环后将当前元素的下标放入栈内
      }
    }
    return res
};